home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import java.beans.PropertyChangeEvent;
- import javax.swing.JComponent;
- import javax.swing.UIManager;
- import javax.swing.border.Border;
- import javax.swing.plaf.TextUI;
- import javax.swing.plaf.UIResource;
- import javax.swing.text.AbstractDocument;
- import javax.swing.text.BadLocationException;
- import javax.swing.text.Caret;
- import javax.swing.text.DefaultEditorKit;
- import javax.swing.text.Document;
- import javax.swing.text.EditorKit;
- import javax.swing.text.Element;
- import javax.swing.text.Highlighter;
- import javax.swing.text.JTextComponent;
- import javax.swing.text.Keymap;
- import javax.swing.text.Position;
- import javax.swing.text.View;
- import javax.swing.text.ViewFactory;
- import javax.swing.text.Position.Bias;
-
- public abstract class BasicTextUI extends TextUI implements ViewFactory {
- private static final EditorKit defaultKit = new DefaultEditorKit();
- transient JTextComponent editor;
- transient boolean painted = false;
- transient RootView rootView = new RootView(this);
- transient UpdateHandler updateHandler = new UpdateHandler(this);
- private static final Position.Bias[] discardBias = new Position.Bias[1];
-
- public View create(Element var1) {
- return null;
- }
-
- public View create(Element var1, int var2, int var3) {
- return null;
- }
-
- protected Caret createCaret() {
- return new BasicCaret();
- }
-
- protected Highlighter createHighlighter() {
- return new BasicHighlighter();
- }
-
- protected Keymap createKeymap() {
- String var1 = this.getKeymapName();
- Keymap var2 = JTextComponent.getKeymap(var1);
- if (var2 == null) {
- Keymap var3 = JTextComponent.getKeymap("default");
- var2 = JTextComponent.addKeymap(var1, var3);
- String var4 = this.getPropertyPrefix();
- Object var5 = UIManager.get(var4 + ".keyBindings");
- if (var5 != null && var5 instanceof JTextComponent.KeyBinding[]) {
- JTextComponent.KeyBinding[] var6 = (JTextComponent.KeyBinding[])var5;
- JTextComponent.loadKeymap(var2, var6, this.getComponent().getActions());
- }
- }
-
- return var2;
- }
-
- public void damageRange(JTextComponent var1, int var2, int var3) {
- this.damageRange(var1, var2, var3, Bias.Forward, Bias.Backward);
- }
-
- public void damageRange(JTextComponent var1, int var2, int var3, Position.Bias var4, Position.Bias var5) {
- if (this.painted) {
- Rectangle var6 = this.getVisibleEditorRect();
- Document var7 = var1.getDocument();
-
- try {
- if (var7 instanceof AbstractDocument) {
- ((AbstractDocument)var7).readLock();
- }
-
- this.rootView.setSize((float)var6.width, (float)var6.height);
- Shape var10 = this.rootView.modelToView(var2, var4, var3, var5, var6);
- Rectangle var11 = var10 instanceof Rectangle ? (Rectangle)var10 : var10.getBounds();
- this.editor.repaint(var11.x, var11.y, var11.width, var11.height);
- } catch (BadLocationException var14) {
- } finally {
- if (var7 instanceof AbstractDocument) {
- ((AbstractDocument)var7).readUnlock();
- }
-
- }
- }
-
- }
-
- protected final JTextComponent getComponent() {
- return this.editor;
- }
-
- public EditorKit getEditorKit(JTextComponent var1) {
- return defaultKit;
- }
-
- protected String getKeymapName() {
- String var1 = this.getClass().getName();
- int var2 = var1.lastIndexOf(46);
- if (var2 >= 0) {
- var1 = var1.substring(var2 + 1, var1.length());
- }
-
- return var1;
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- Document var2 = this.editor.getDocument();
- Insets var3 = var1.getInsets();
- Dimension var4 = new Dimension();
-
- try {
- if (var2 instanceof AbstractDocument) {
- ((AbstractDocument)var2).readLock();
- }
-
- var4.width = (int)Math.min((long)this.rootView.getMaximumSpan(0) + (long)var3.left + (long)var3.right, 2147483647L);
- var4.height = (int)Math.min((long)this.rootView.getMaximumSpan(1) + (long)var3.top + (long)var3.bottom, 2147483647L);
- } finally {
- if (var2 instanceof AbstractDocument) {
- ((AbstractDocument)var2).readUnlock();
- }
-
- }
-
- return var4;
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- Document var2 = this.editor.getDocument();
- Insets var3 = var1.getInsets();
- Dimension var4 = new Dimension();
-
- try {
- if (var2 instanceof AbstractDocument) {
- ((AbstractDocument)var2).readLock();
- }
-
- var4.width = (int)this.rootView.getMinimumSpan(0) + var3.left + var3.right;
- var4.height = (int)this.rootView.getMinimumSpan(1) + var3.top + var3.bottom;
- } finally {
- if (var2 instanceof AbstractDocument) {
- ((AbstractDocument)var2).readUnlock();
- }
-
- }
-
- return var4;
- }
-
- public int getNextVisualPositionFrom(JTextComponent var1, int var2, Position.Bias var3, int var4, Position.Bias[] var5) throws BadLocationException {
- Document var6 = this.editor.getDocument();
-
- int var7;
- try {
- if (var6 instanceof AbstractDocument) {
- ((AbstractDocument)var6).readLock();
- }
-
- if (!this.painted) {
- return -1;
- }
-
- Rectangle var10 = this.getVisibleEditorRect();
- this.rootView.setSize((float)var10.width, (float)var10.height);
- var7 = this.rootView.getNextVisualPositionFrom(var2, var3, var10, var4, var5);
- } finally {
- if (var6 instanceof AbstractDocument) {
- ((AbstractDocument)var6).readUnlock();
- }
-
- }
-
- return var7;
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- Document var2 = this.editor.getDocument();
- Insets var3 = var1.getInsets();
- Dimension var4 = ((Component)var1).getSize();
-
- try {
- if (var2 instanceof AbstractDocument) {
- ((AbstractDocument)var2).readLock();
- }
-
- if (var4.width > var3.left + var3.right && var4.height > var3.top + var3.bottom) {
- this.rootView.setSize((float)(var4.width - var3.left - var3.right), (float)(var4.height - var3.top - var3.bottom));
- }
-
- var4.width = (int)Math.min((long)this.rootView.getPreferredSpan(0) + (long)var3.left + (long)var3.right, 2147483647L);
- var4.height = (int)Math.min((long)this.rootView.getPreferredSpan(1) + (long)var3.top + (long)var3.bottom, 2147483647L);
- } finally {
- if (var2 instanceof AbstractDocument) {
- ((AbstractDocument)var2).readUnlock();
- }
-
- }
-
- return var4;
- }
-
- protected abstract String getPropertyPrefix();
-
- public View getRootView(JTextComponent var1) {
- return this.rootView;
- }
-
- protected Rectangle getVisibleEditorRect() {
- Rectangle var1 = new Rectangle(this.editor.getSize());
- Insets var2 = this.editor.getInsets();
- var1.x += var2.left;
- var1.y += var2.top;
- var1.width -= var2.left + var2.right;
- var1.height -= var2.top + var2.bottom;
- return var1;
- }
-
- protected void installDefaults() {
- String var1 = this.getPropertyPrefix();
- Font var2 = this.editor.getFont();
- if (var2 == null || var2 instanceof UIResource) {
- this.editor.setFont(UIManager.getFont(var1 + ".font"));
- }
-
- Color var3 = this.editor.getBackground();
- if (var3 == null || var3 instanceof UIResource) {
- this.editor.setBackground(UIManager.getColor(var1 + ".background"));
- }
-
- Color var4 = this.editor.getForeground();
- if (var4 == null || var4 instanceof UIResource) {
- this.editor.setForeground(UIManager.getColor(var1 + ".foreground"));
- }
-
- Color var5 = this.editor.getCaretColor();
- if (var5 == null || var5 instanceof UIResource) {
- this.editor.setCaretColor(UIManager.getColor(var1 + ".caretForeground"));
- }
-
- Color var6 = this.editor.getSelectionColor();
- if (var6 == null || var6 instanceof UIResource) {
- this.editor.setSelectionColor(UIManager.getColor(var1 + ".selectionBackground"));
- }
-
- Color var7 = this.editor.getSelectedTextColor();
- if (var7 == null || var7 instanceof UIResource) {
- this.editor.setSelectedTextColor(UIManager.getColor(var1 + ".selectionForeground"));
- }
-
- Color var8 = this.editor.getDisabledTextColor();
- if (var8 == null || var8 instanceof UIResource) {
- this.editor.setDisabledTextColor(UIManager.getColor(var1 + ".inactiveForeground"));
- }
-
- Border var9 = this.editor.getBorder();
- if (var9 == null || var9 instanceof UIResource) {
- this.editor.setBorder(UIManager.getBorder(var1 + ".border"));
- }
-
- Insets var10 = this.editor.getMargin();
- if (var10 == null || var10 instanceof UIResource) {
- this.editor.setMargin(UIManager.getInsets(var1 + ".margin"));
- }
-
- Caret var11 = this.editor.getCaret();
- if (var11 == null || var11 instanceof UIResource) {
- var11 = this.createCaret();
- this.editor.setCaret(var11);
- Object var12 = UIManager.get(var1 + ".caretBlinkRate");
- if (var12 != null && var12 instanceof Integer) {
- Integer var13 = (Integer)var12;
- var11.setBlinkRate(var13);
- }
- }
-
- Highlighter var15 = this.editor.getHighlighter();
- if (var15 == null || var15 instanceof UIResource) {
- this.editor.setHighlighter(this.createHighlighter());
- }
-
- }
-
- protected void installKeyboardActions() {
- this.editor.setKeymap(this.createKeymap());
- }
-
- protected void installListeners() {
- }
-
- public void installUI(JComponent var1) {
- if (var1 instanceof JTextComponent) {
- this.editor = (JTextComponent)var1;
- this.installDefaults();
- this.editor.setOpaque(true);
- this.editor.setAutoscrolls(true);
- this.editor.addPropertyChangeListener(this.updateHandler);
- Document var2 = this.editor.getDocument();
- if (var2 == null) {
- this.editor.setDocument(this.getEditorKit(this.editor).createDefaultDocument());
- } else {
- var2.addDocumentListener(this.updateHandler);
- this.modelChanged();
- }
-
- this.installListeners();
- this.installKeyboardActions();
- } else {
- throw new Error("TextUI needs JTextComponent");
- }
- }
-
- protected void modelChanged() {
- ViewFactory var1 = this.rootView.getViewFactory();
- Document var2 = this.editor.getDocument();
- Element var3 = var2.getDefaultRootElement();
- this.setView(var1.create(var3));
- }
-
- public Rectangle modelToView(JTextComponent var1, int var2) throws BadLocationException {
- return this.modelToView(var1, var2, Bias.Forward);
- }
-
- public Rectangle modelToView(JTextComponent var1, int var2, Position.Bias var3) throws BadLocationException {
- Document var4 = this.editor.getDocument();
-
- Rectangle var5;
- try {
- if (var4 instanceof AbstractDocument) {
- ((AbstractDocument)var4).readLock();
- }
-
- if (!this.painted) {
- return null;
- }
-
- Rectangle var8 = this.getVisibleEditorRect();
- this.rootView.setSize((float)var8.width, (float)var8.height);
- Shape var9 = this.rootView.modelToView(var2, var8, var3);
- var5 = var9.getBounds();
- } finally {
- if (var4 instanceof AbstractDocument) {
- ((AbstractDocument)var4).readUnlock();
- }
-
- }
-
- return var5;
- }
-
- public final void paint(Graphics var1, JComponent var2) {
- if (this.rootView.getViewCount() > 0 && this.rootView.getView(0) != null) {
- Document var3 = this.editor.getDocument();
-
- try {
- if (var3 instanceof AbstractDocument) {
- ((AbstractDocument)var3).readLock();
- }
-
- this.paintSafely(var1);
- } finally {
- if (var3 instanceof AbstractDocument) {
- ((AbstractDocument)var3).readUnlock();
- }
-
- }
- }
-
- }
-
- protected void paintBackground(Graphics var1) {
- var1.setColor(this.editor.getBackground());
- Dimension var2 = this.editor.getSize();
- var1.fillRect(0, 0, var2.width, var2.height);
- }
-
- protected void paintSafely(Graphics var1) {
- this.painted = true;
- Highlighter var2 = this.editor.getHighlighter();
- Caret var3 = this.editor.getCaret();
- if (this.editor.isOpaque()) {
- this.paintBackground(var1);
- }
-
- if (var2 != null) {
- var2.paint(var1);
- }
-
- Rectangle var4 = this.getVisibleEditorRect();
- this.rootView.paint(var1, var4);
- if (var3 != null) {
- var3.paint(var1);
- }
-
- }
-
- protected void propertyChange(PropertyChangeEvent var1) {
- }
-
- protected final void setView(View var1) {
- this.editor.removeAll();
- this.rootView.setView(var1);
- this.painted = false;
- this.editor.revalidate();
- }
-
- protected void uninstallDefaults() {
- if (this.editor.getCaretColor() instanceof UIResource) {
- this.editor.setCaretColor((Color)null);
- }
-
- if (this.editor.getSelectionColor() instanceof UIResource) {
- this.editor.setSelectionColor((Color)null);
- }
-
- if (this.editor.getDisabledTextColor() instanceof UIResource) {
- this.editor.setDisabledTextColor((Color)null);
- }
-
- if (this.editor.getSelectedTextColor() instanceof UIResource) {
- this.editor.setSelectedTextColor((Color)null);
- }
-
- if (this.editor.getBorder() instanceof UIResource) {
- this.editor.setBorder((Border)null);
- }
-
- if (this.editor.getMargin() instanceof UIResource) {
- this.editor.setMargin((Insets)null);
- }
-
- if (this.editor.getCaret() instanceof UIResource) {
- this.editor.setCaret((Caret)null);
- }
-
- if (this.editor.getHighlighter() instanceof UIResource) {
- this.editor.setHighlighter((Highlighter)null);
- }
-
- }
-
- protected void uninstallKeyboardActions() {
- this.editor.setKeymap((Keymap)null);
- }
-
- protected void uninstallListeners() {
- }
-
- public void uninstallUI(JComponent var1) {
- this.editor.removePropertyChangeListener(this.updateHandler);
- this.editor.getDocument().removeDocumentListener(this.updateHandler);
- this.painted = false;
- this.uninstallDefaults();
- this.rootView.setView((View)null);
- ((Container)var1).removeAll();
- this.uninstallKeyboardActions();
- this.uninstallListeners();
- }
-
- public void update(Graphics var1, JComponent var2) {
- this.paint(var1, var2);
- }
-
- public int viewToModel(JTextComponent var1, Point var2) {
- return this.viewToModel(var1, var2, discardBias);
- }
-
- public int viewToModel(JTextComponent var1, Point var2, Position.Bias[] var3) {
- int var4 = -1;
- Document var5 = this.editor.getDocument();
-
- try {
- if (var5 instanceof AbstractDocument) {
- ((AbstractDocument)var5).readLock();
- }
-
- if (this.painted) {
- Rectangle var8 = this.getVisibleEditorRect();
- this.rootView.setSize((float)var8.width, (float)var8.height);
- var4 = this.rootView.viewToModel((float)var2.x, (float)var2.y, var8, var3);
- }
- } finally {
- if (var5 instanceof AbstractDocument) {
- ((AbstractDocument)var5).readUnlock();
- }
-
- }
-
- return var4;
- }
- }
-